function ajax(opts){
	var defaults={
		method:'GET',
		url:'',
		data:'',
		async:true,
		chache:true,
		contentType:'application/x-www-form-urlencoded'
		success:function(){},
		error:function(){}
	};
	for(var key in opts){
		defaults[key]=opts[key];
	}
	if(typeof defaults.data==='object'){
		var str='';
		var value='';
		for(var key in defaults.data){
			if(defaults.data[key].indexOf('&')!==-1){
				value=defaults.data.[key].replace(/&/g,escape('&'));
			}
			if(key.indexOf('&')!==-1)key=key.replace(/&/g,escape('&'));
			str+=key+'='+value+'&';
		}
		defaults.data=str.substring(0,length-1);
	}
	defaults.method=defaults.method.toUpperCase();
	defaults.cache=defaults.cache?'':'&'+new Date().getTime();
	if(defaults.method==='GET'&&(defaults.cache||defaults.data)) defaults.url+='?'+defaults.data+defaults.cache;
	var xhr=window.XMLHttpRequest?new XMLHttpRequest:new ActiveXObject("Microsoft.XMLHTTP");
	xhr.open(defaults.method,defaults.url,defaults.async);
	if(defaults.method==='GET'){
		xhr.send(null);
	}
	else{
		xhr.setRequestHeader("content-type",defaults.contentType);
		xhr.send(defaults.data);
	}
	xhr.onreadystatechange=function(){
		if(xhr.readyState===4){
			if(xhr.status===200)
				defaults.success.call(xhr,xhr.responseText);
			else{
				defaults.erroe();
			}
		}
	}
}
